package cn.miju.admin.system.service;

import cn.miju.admin.system.vo.*;

import java.util.List;

/**
 * <pre>
 * 系统菜单
 * </pre>
 *
 * @author zhuming
 * @version 1.0.0
 * @since 2023-03-29 11:50
 */
public interface MenuService {
    /**
     * 获取系统菜单
     * @param roleId 角色ID
     * @return {@link MenuListOutVO}
     */
    MenuListOutVO getMenuList(Long roleId);
    /**
     * 获取用户菜单
     * @param roleIds 角色ID
     * @return {@link UserMenuListOutVO}
     */
    UserMenuListOutVO getUserMenuList(List<Long> roleIds);

    /**
     * 获取菜单树
     * @return {@link List<MenuTreeOutVO>}
     */
    List<MenuTreeOutVO> getMenuTree();

    /**
     * 保存菜单
     * @param inVO {@link MenuSaveInVO}
     * @return 菜单ID
     */
    Long saveMenu(MenuSaveInVO inVO);

    /**
     * 授权菜单
     * @param inVO {@link AuthMenuInVO}
     */
    void authMenu(AuthMenuInVO inVO);

    /**
     * 批量删除菜单
     * @param inVO {@link MenuDeleteInVO}
     */
    void deletes(MenuDeleteInVO inVO);
}
